#include <config.h>
#include <init.h>
#include <board.h>
#include "ES8P508x.h"
#include "lib_config.h"
#include "device.h"
#include <settings.h>
#include "es8p508_input.h"

#ifdef configUSING_INPUT

static struct device input_dev;


static void input_gpio_init(void)
{
	GPIO_InitStruType x;
	x.GPIO_Signal = GPIO_Pin_Signal_Digital;
	x.GPIO_Func = GPIO_Func_0;
	x.GPIO_Direction = GPIO_Dir_In;
	x.GPIO_PUEN = GPIO_PUE_Input_Enable;
	x.GPIO_PDEN = GPIO_PDE_Input_Disable;
	x.GPIO_OD   = GPIO_ODE_Output_Disable;
	x.GPIO_DS = GPIO_DS_Output_Normal;
	GPIO_Init(INPUT1_PORT, INPUT1_PIN, &x);
}

size_t input_read(device_t *dev, off_t pos, void *buffer, size_t size)
{
    if(GPIO_ReadBit(INPUT1_PORT, INPUT1_PIN))
			return 1;
		else
			return 0;
}


static struct device_ops intput_ops =
{
    .read = input_read,
};

int board_setup_input(void)
{
	  input_gpio_init();
    input_dev.ops = &intput_ops;
    device_register(&input_dev, "re200", 0);
    return 0;
}

device_initcall(board_setup_input);
#endif
